One area of background entails bootstrapping of an operating system (OS). When a computer is powered on, the binary image of its OS must first be loaded into memory from a storage device in order for the OS to be set running and controlling the whole computer system. In order to load the OS, booting or boot strapping mechanisms are conventionally used to initiate or start the computer system running.
Traditionally, the OS was bootstrapped from a hard disk drive of the computer. Conventional computer systems, including most mobile computers, keep all the essential hardware components including the hard disk from which the computer bootstraps (or “boots” for short) its operating system collocated within the one enclosure, such as the housing of the computer, whether a so called desktop or notebook type model. It has been recognized, however, that in some circumstances it may be desirable for a computer system to be constructed in such a way that the system hard disk containing the operating system and even the computer user's own data is not collocated or is kept physically separated from the rest of the whole computer system.
Accordingly, an ongoing trend among smaller and larger enterprises alike is to provide a diskless client that eliminates the need for each computing system in the network to have a hard drive. Such diskless clients are generally desktop type computing systems and typically bootstrap their operating systems from network servers over an internet or intranet connection. With all data being on a central server, file management can be controlled at the one central location. System backup is greatly facilitated since a multitude of computing systems not need to be activated at the time that backup is carried out, and any needed “patch management” can be carried out at the server end.
There are a variety of known processes for implementing a remote bootstrap for use in a diskless client. One such way is a PXE (Preboot Execution Environment) boot. Another such way is utilizing the iSCSI (Internet Small Computer Systems Interface) protocol. Additional information on PXE boots is available in the Preboot Execution Environment (PXE) Specification (http colon dot dot slash slash www dot pix dot net slash software slash pxeboot slash archive slash pxespec dot pdf). Additional information on the iSCSI protocol is available in RFC 3720. (http colon slash slash www dot faqs dot org slash rfcs slash rfc3720 dot html).
Such diskless clients, however, have problems and limitations. The most significant limitation is that the client computer is dependent upon a consistent and persistent connection to the network server containing the OS image. As such, diskless clients have tended to be stationary machines such as desktops, and not mobile machines, such as notebooks.
Another area of background entails virtual machines and virtual machine monitors which arose out of the need to run applications written for different operating systems concurrently on a common hardware platform, or for the full utilization of available hardware resources. Virtual machine monitors were the subject of research since the late 1960's and came to be known as the “Virtual Machine Monitor” (VMM). Persons of ordinary skill in the art are urged to refer to, for example, R. P. Goldberg, “Survey of Virtual Machine Research,” IEEE Computer, Vol. 7, No. 6, 1974. During the 1970's, as a further example, International Business Machines Corporation adopted a virtual machine monitor for use in its VM/370 system.
A virtual machine monitor, sometimes referred to in the literature as the “hypervisor,” is a thin piece of software that runs directly on top of the hardware and virtualizes all the hardware resources of the machine. Since the virtual machine monitor's interface is the same as the hardware interface of the machine, an operating system cannot determine the presence of the VMM. Consequently, when the hardware interface is one-for-one compatible with the underlying hardware, the same operating system can run either on top of the virtual machine monitor or on top of the raw hardware. It is then possible to run multiple instances of operating systems or merely instances of operating system kernels if only a small subset of system resources are needed. Each instance is referred to as a virtual machine. The operating system can be replicated across virtual machines or distinctively different operating systems can be used for each virtual machine. In any case, the virtual machines are entirely autonomous and depend on the virtual machine monitor for access to the hardware resources such as hardware interrupts.